﻿using System;
using System.Data.SqlClient;
using System.Globalization;

public partial class Alumno_Default : System.Web.UI.Page
{
    private String _SessionID;
    private String _UserType;
    private Int32 _Folio;
    private Boolean _FolioExists;
    
    protected void Page_Load(object sender, EventArgs e)
    {
        SessionValidation();

        // Se verifica que el alumno no tenga otro folio dentro del periodo actual
        DatabaseConnection dbCon = new DatabaseConnection();
        _FolioExists = dbCon.FolioExistsForCurrentUser(ref _Folio, _SessionID);

        if (_FolioExists)
        {
            Boolean solicitudAceptada = false;
            Boolean solicitudEnviada = false;
            Boolean solicitudRechazada = false;

            dbCon.SolicitudStatus(_SessionID, _Folio, ref solicitudAceptada, ref solicitudEnviada, ref solicitudRechazada);

            if(solicitudEnviada)
            {
                UsuarioSolicitudEnviada.Visible = true;
                ResumenTableDiv.Visible = false;

                if(solicitudAceptada && !solicitudRechazada)
                {
                    SolicitudAceptadaDiv.Visible = true;
                }
                else if (!solicitudAceptada && solicitudRechazada)
                {
                    SolicitudRechazadaDiv.Visible = true;
                }
                else if(!solicitudAceptada && !solicitudRechazada)
                {
                    SolicitudEnRevisionDiv.Visible = true;
                }

            } 
            else
            {
                UsuarioSolicitudNoEnviada.Visible = true;
            }
        }
        else
        {
            UsuarioSinFolio.Visible = true;
        }
        dbCon.CloseConnection();
    }


    // Genera una nueva solicitud al Alumno (Folio) y regresa True si se creo la nueva solicitud
    protected void CrearNuevaSolicitud(object sender, EventArgs e)
    {
        if (_FolioExists)
        {
            Response.Redirect("~/Forma/Forma1.aspx");
        }
        //No hay folio, se crea uno nuevo
        else
        {
            String TimeStamp = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss", DateTimeFormatInfo.InvariantInfo);
            DatabaseConnection dbcon = new DatabaseConnection();

            // Se crea un Query Parametrizado
            SqlCommand InsertSolicitud =
                new SqlCommand(
                    "INSERT INTO Solicitud (Matricula, Solicitud_Fecha, TimeStamp_FechaCreacion, Solicitud_Aceptada, " +
                    "Solicitud_Enviada, Solicitud_Rechazada) VALUES (@Matricula, @Solicitud_Fecha, @TimeStamp_FechaCreacion, " + 
                    "'false', 'false', 'false')");
            InsertSolicitud.Parameters.Add(new SqlParameter("@Matricula", _SessionID));
            InsertSolicitud.Parameters.Add(new SqlParameter("@Solicitud_Fecha", TimeStamp));
            InsertSolicitud.Parameters.Add(new SqlParameter("@TimeStamp_FechaCreacion", TimeStamp));

            int rowsAffected = dbcon.ParameterizedExecuteNonQuery(InsertSolicitud);
            dbcon.CloseConnection();
            Session["FolioSuccess"] = "True";
            Response.Redirect("~/Forma/Forma1.aspx");
        }
    }


    // Cuando el alumno tiene una solicitud empezada, se reenvía a que la siga llenando.
    protected void ContinuarSolicitud(object sender, EventArgs e)
    {
        Response.Redirect("~/Forma/Resumen.aspx");
    }


    // Valida que la sesión del usuario sea la correcta para mostrar
    // el contenido de esta página
    protected void SessionValidation()
    {
        _SessionID = (String)Session["SessionID"];
        _UserType = (String)Session["UserType"];

        if (String.IsNullOrEmpty(_SessionID) || String.IsNullOrEmpty(_UserType))
        {
            Session.RemoveAll();
            Response.Redirect("~/Default.aspx");
        }
        else
        {
            if (!String.Equals(_UserType, "Alumnos"))
            {
                Session.RemoveAll();
                Response.Redirect("~/Default.aspx");
            }
        }
    }

    // Descarga el toda la solocitud del alumno una vez que lo envía
    protected void DownloadReportButton_Click(object sender, EventArgs e)
    {
        string path = "~/Services/Reportes.ashx?formChoices=111111111&folio=" + _Folio + "&download=true";
        Response.Redirect(path);
    }
}